🔷 SOA

Arquitectura Orientada a Servicios

¿Qué es SOA?

La arquitectura orientada a los servicios (SOA) es un tipo de diseño de software que permite reutilizar sus elementos gracias a las interfaces de servicios que se comunican a través de una red con un lenguaje común.

Un servicio es una unidad autónoma de una o más funciones del software diseñada para realizar una tarea específica, como recuperar cierta información o ejecutar una operación.

📊 ¿Cómo Funciona SOA?

Diagrama de Arquitectura SOA
Figura 1: Esquema de comunicación en Arquitectura SOA

🔄 Evolución desde el Modelo Monolítico

Antes de SOA (años 90): Las aplicaciones monolíticas requerían integración profunda punto a punto para cada proyecto nuevo. Si algo fallaba, había que dar de baja toda la aplicación.

Con SOA: Los servicios se exponen usando protocololes estándar de red (SOAP, JSON, ActiveMQ, Apache Thrift). Los desarrolladores pueden reutilizar funciones existentes sin crear desde cero.

💡 SOA utiliza un sistema "sin conexión directa" que reduce la dependencia entre componentes, permitiendo que se comuniquen y coordinen procesos empresariales de forma eficiente.

✨ Ventajas de SOA vs Enfoque Monolítico

🚀

Comercialización Rápida

La reutilización de servicios agiliza el ensamblaje de aplicaciones. Los desarrolladores no empiezan desde cero.

🔄

Uso de Infraestructura Heredada

Permite tomar funciones de plataformas existentes y adaptarlas a entornos nuevos.

💰

Reducción de Costos

Mayor agilidad y desarrollo más eficiente reducen significativamente los costos operativos.

🔧

Mantenimiento Sencillo

Los servicios autónomos e independientes se pueden modificar sin afectar al resto del sistema.

📈

Escalabilidad

Ejecución en múltiples lenguajes y plataformas. Protocolo estandarizado que facilita el ajuste de aplicaciones.

Mayor Confiabilidad

Es más fácil depurar servicios pequeños que grandes volúmenes de código monolítico.

🏗️ Elementos Esenciales de SOA

Elementos de SOA
Figura 2: Tres roles fundamentales en SOA
🏢

Proveedor de Servicios

Crea servicios web, los ofrece a un registro de servicios disponibles y gestiona sus condiciones de uso.

📋

Agente o Registro

Brinda información acerca del servicio a quien lo solicite. Puede ser público o privado.

👤

Usuario del Servicio

Busca un servicio en el registro y se conecta con el proveedor para recibirlo.

🔍 SOA vs Microservicios

Aunque SOA y microservicios son conceptos similares, existen diferencias clave:

Característica SOA Microservicios
Alcance Enfoque de arquitectura para toda la empresa Estrategia de implementación para equipos de desarrollo
Comunicación Utiliza ESB (Enterprise Service Bus) Comunicación sin estado a través de APIs independientes
Flexibilidad Estándar definido para toda la organización Mayor adaptabilidad, los equipos eligen sus herramientas
Dependencia Sistema centralizado de integración APIs que no dependen de un lenguaje específico
SOA vs Microservicios
Figura 3: Comparación visual entre SOA y Microservicios

☁️ SOA y SaaS (Software como Servicio)

No se debe confundir SOA con SaaS. El Software como Servicio (SaaS) es una forma de cloud computing que ofrece a los usuarios una aplicación en la nube junto con toda su infraestructura de TI y plataformas subyacentes.

Modelo Cloud Computing
Figura 4: Modelos de servicio en Cloud Computing
🔗 En SOA, los proveedores pueden ofrecer servicios web como aplicaciones de SaaS. Los usuarios interactúan mediante navegadores web y pueden conectar funciones adicionales por medio de APIs (REST o SOAP).

☁️ SaaS, PaaS e IaaS

📱

🔹 SaaS – Software as a Service

Software como Servicio

👉 Usas el software, no lo instalas ni lo mantienes.

El proveedor se encarga de todo: servidor, sistema operativo, base de datos y aplicación. Tú solo entras y lo usas.

📌 Ejemplos:

  • Gmail
  • Google Drive
  • Microsoft 365
  • Zoom
  • Canva

🧠 "Yo solo uso el programa, no me preocupo por nada técnico."

⚙️

🔹 PaaS – Platform as a Service

Plataforma como Servicio

👉 Desarrollas aplicaciones sin preocuparte del servidor.

Tú escribes el código. El proveedor gestiona: Servidores, Sistema operativo, Base de datos, Seguridad básica.

📌 Ejemplos:

  • Heroku
  • Google App Engine
  • Microsoft Azure App Service
  • PythonAnywhere

🧠 "Yo programo, la nube se encarga de lo demás."

🖥️

🔹 IaaS – Infrastructure as a Service

Infraestructura como Servicio

👉 Tienes control casi total del sistema.

El proveedor te da: Servidores virtuales, Red, Almacenamiento. Tú instalas: Sistema operativo, Frameworks, Base de datos, Aplicaciones.

📌 Ejemplos:

  • Amazon EC2
  • Google Compute Engine
  • Microsoft Azure Virtual Machines
  • DigitalOcean

🧠 "Me dan la computadora virtual, yo la configuro completa."

📊 Comparación Rápida

Modelo ¿Quién administra más? Nivel de control
SaaS Proveedor 🔴 Bajo
PaaS Compartido 🟡 Medio
IaaS Usuario 🟢 Alto

🎓 Ejemplo Educativo con Django + MySQL

SaaS → Usar Google Forms para recolectar datos

PaaS → Subir tu app Django a Heroku

IaaS → Crear un servidor Linux y montar Django + MySQL tú mismo

Proveedores de nube populares: AWS, Azure, IBM Cloud, Google Cloud Platform

🎯 Conclusión

La Arquitectura Orientada a Servicios (SOA) representa un paradigma fundamental en el desarrollo de software moderno, permitiendo:

  • ✓ Mayor reutilización de componentes
  • ✓ Reducción de costos y tiempos de desarrollo
  • ✓ Mejor escalabilidad y mantenimiento
  • ✓ Integración efectiva de sistemas heredados y nuevos
  • ✓ Comunicación estandarizada entre servicios